package novel.mzx.com.utils;

import android.app.Activity;
import android.app.ActivityManager;
import android.content.Context;

import java.util.Stack;

/**
 * 应用程序Activity管理类
 * @author  lilingfei
 */ 
public class ActivityUtils {
	private static Stack<Activity> activityStack;
    private static ActivityUtils instance; 
    private ActivityUtils(){}
    /**
     * 单一实例
     */ 
    public static ActivityUtils getActivityManager(){ 
        if(instance==null){ 
            instance=new ActivityUtils(); 
        } 
        return instance; 
    } 
    /**
     * 添加Activity到堆栈
     */ 
    public void addActivity(Activity activity){
        if(activityStack==null){ 
            activityStack=new Stack<Activity>();
        } 
        activityStack.add(activity); 
    } 
    /**
     * 获取当前Activity（堆栈中最后一个压入的）
     */ 
    public Activity getLastActivity(){
        Activity activity=activityStack.lastElement();
        return activity; 
    } 
    /**
     * 结束当前Activity（堆栈中最后一个压入的）
     */ 
    public void finishLastActivity(){ 
        Activity activity=activityStack.lastElement();
        if(activity!=null){ 
            activity.finish(); 
            activity=null; 
        } 
    } 
    /**
     * 结束指定的Activity
     */ 
    public void finishActivity(Activity activity){
        if(activity!=null){ 
            activityStack.remove(activity); 
            activity.finish(); 
            activity=null; 
        } 
    } 
    /**
     * 结束指定类名的Activity
     */ 
    public void finishClassActivity(Class<?> cls){
        for (Activity activity : activityStack) {
            if(activity.getClass().equals(cls) ){ 
                finishActivity(activity); 
            } 
        } 
    } 
    /**
     * 结束所有Activity
     */ 
    public void finishAllActivity(){ 
        for (int i = 0, size = activityStack.size(); i < size; i++){ 
            if (null != activityStack.get(i)){ 
                activityStack.get(i).finish(); 
            } 
        } 
        activityStack.clear(); 
    } 
    /**
     * 退出应用程序
     */ 
    public void ExitApp(Context context) {
        try { 
            finishAllActivity(); 
            ActivityManager activityMgr= (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE);
            activityMgr.restartPackage(context.getPackageName()); 
            System.exit(0);
        } catch (Exception e) { }
    }



}
